package com.qumitech.visualnovel.datasource.app;

import java.util.*;

import com.qumitech.visualnovel.controller.vo.statics.AccountPayStaticsVO;
import org.apache.ibatis.annotations.*;
import com.qumitech.visualnovel.model.dao.app.Account;
import com.qumitech.visualnovel.model.dto.AccountDetailDTO;
import com.qumitech.visualnovel.model.dto.AccountInfoQueryDTO;
import com.qumitech.visualnovel.model.dto.AccountInfoResponseDTO;

public interface AccountMapper {
    int deleteByPrimaryKey(Long uid);

    int insert(Account record);

    int insertSelective(Account record);

    Account selectByPrimaryKey(Long uid);

    int updateByPrimaryKeySelective(Account record);

    int updateByPrimaryKey(Account record);

    List<Account> getList(@Param("uids") List<String> uids);

    List<Account> getPresentList(@Param("uids") List<String> presentIds);

    List<Account> getNicknameList(@Param("uids") List<String> uids);

    List<Long> getUidListByName(@Param("userName") String userName);

    @MapKey("uid")
    Map<Long, Account> getUserInfoMap(@Param("uidSet") Set<Long> uidSet);

    int total(AccountInfoQueryDTO param);

    List<AccountInfoResponseDTO> list(AccountInfoQueryDTO param);

    AccountDetailDTO getDetail(@Param("uid") String uid);

    List<AccountPayStaticsVO> countRegister(@Param("dayStart") Date dayStart, @Param("dayEnd") Date dayEnd);
}